/**
 * 旗帜前缀枚举
 */
export enum FlagPrefix {
    /** 小队发布 */
    team = 'team',
    /**
     * 小队集合
     */
    teamGather = 'teamGather',
    /**
     * 小队持续发布
     */
    teamContinue = 'teamContinue',
    /**
     * preferCreep
     */
    preferCreep = 'preferCreep',
}

declare global {
    interface Flag {
        /**
         * 该旗帜拥有的爬，
         */
        _creeps: Creep[]
        /**
         * 该旗帜所属的房间，注意不是旗帜所在的房间，可能不存在（global）
         */
        _belongRoom?: Room
        /**
         * 旗帜当前房间
         */
        _room?: Room
        /**
         * 当前 tick 是否设置过位置
         */
        _setPositioned?: boolean
    }

    interface FlagMemory {
        /**
         * 旗帜前缀
         */
        prefix: FlagPrefix
        /**
         * 旗帜所属房间
         */
        belong: string
        /**
         * 旗帜 ID
         */
        id: string
        /**
         * 下一 tick 要移动的位置
         */
        setPosition?: string
    }

    interface CreepMemory {
        /**
         * 该 creep 所属的旗帜
         */
        flag?: string
    }
}
